package dnacos

import (
	"fmt"
	"github.com/nacos-group/nacos-sdk-go/v2/vo"
	"gopkg.in/yaml.v3"
)

//// 解析nacos_test.yml配置文件 和上边的字段保持一致
//type NacosTestConfig struct {
//	Name string `json:"name" yaml:"name" mapstructure:"name"`
//	Host string `json:"host" yaml:"host" mapstructure:"host"`
//	Port int    `json:"port" yaml:"port" mapstructure:"port"`
//}

func (n NacosConfigClient[T]) ReadConfigFromYml(dataId string, group string, config *T) *T {
	//TODO implement me
	content, err := n.client.GetConfig(vo.ConfigParam{
		DataId: dataId, //配置文件名
		Group:  group,  //配置文件分组
	})
	if err != nil {
		//读取配置文件失败
		panic(any(err))
	}

	//fmt.Println(content) //这里我们打印一下配置文件的内容

	// 解析配置文件
	yaml.Unmarshal([]byte(content), &config)
	fmt.Printf("打印解析配置:%+v \n", config)

	//time.Sleep(time.Second * 100) // 这里我们休眠100秒，等待配置文件变化
	return config
}

func (n NacosConfigClient[T]) NaconfigListen(dataId string, group string, f func(namespace, group, dataId, data string)) {
	// 监听配置文件变化
	err := n.client.ListenConfig(vo.ConfigParam{
		DataId:   dataId, //配置文件名
		Group:    group,
		OnChange: f,
	})
	if err != nil {
		panic(any(err))
	}

}
